Project: ATM Mimicked Interfaced
The video above shows the simulated result of the codes uploaded on a PIC18F452 using MickroC PIC IDE and compiler.
// Lcd pinout settings
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;
// Pin direction
sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D7_Direction at TRISD3_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;
#define Enter 10
char KeypadPort at PORTB;
// valid password
int passwordChecker(char rec_pass[]);
void main_menu();
void salutation();
void main() {
char store_pass[4];
char keyPress = 0, text[2];
int password;
Keypad_Init(); // intiallize keypads
Lcd_Init();
salutation();
Lcd_Out(3,5,"_");
Lcd_Out(3,6,"_");
Lcd_Out(3,7,"_");
Lcd_Out(3,8,"_");
do
{
do{
keyPress = Keypad_Key_Click();
switch (keyPress) {
case 1: keyPress = 1; break; // 1
case 2: keyPress = 2; break; // 2
case 3: keyPress = 3; break; // 3
//case 4: keyPress = 65; break; // A
case 5: keyPress = 4; break; // 4
case 6: keyPress = 5; break; // 5
case 7: keyPress = 6; break; // 6
//case 8: keyPress = 66; break; // B
case 9: keyPress = 7; break; // 7
case 10: keyPress = 8; break; // 8
case 11: keyPress = 9; break; // 9
//case 12: keyPress = 67; break; // C
case 13: keyPress = 0; break;
case 14: keyPress = 48; break;
case 15: keyPress = 0; break;
// case 16:
}
}while(!keyPress);
//if(keyPress == Enter)
Lcd_Out(3,5, "*");
store_pass[0] = keyPress;
do{
keyPress = Keypad_Key_Click();
switch (keyPress) {
case 1: keyPress = 1; break; // 1
case 2: keyPress = 2; break; // 2
case 3: keyPress = 3; break; // 3
//case 4: keyPress = 65; break; // A
case 5: keyPress = 4; break; // 4
case 6: keyPress = 5; break; // 5
case 7: keyPress = 6; break; // 6
//case 8: keyPress = 66; break; // B
case 9: keyPress = 7; break; // 7
case 10: keyPress = 8; break; // 8
case 11: keyPress = 9; break; // 9
//case 12: keyPress = 67; break; // C
case 13: keyPress = 0; break;
case 14: keyPress = 48; break;
case 15: keyPress = 12; break;
// case 16:
}
}while(!keyPress);
Lcd_Out(3,6,"*");
store_pass[1] = keyPress;
do{
keyPress = Keypad_Key_Click();
switch (keyPress) {
case 1: keyPress = 1; break; // 1
case 2: keyPress = 2; break; // 2
case 3: keyPress = 3; break; // 3
//case 4: keyPress = 65; break; // A
case 5: keyPress = 4; break; // 4
case 6: keyPress = 5; break; // 5
case 7: keyPress = 6; break; // 6
//case 8: keyPress = 66; break; // B
case 9: keyPress = 7; break; // 7
case 10: keyPress = 8; break; // 8
case 11: keyPress = 9; break; // 9
//case 12: keyPress = 67; break; // C
case 13: keyPress = 0; break;
case 14: keyPress = 48; break;
case 15: keyPress = 0; break;
// case 16:
}
}while(!keyPress);
Lcd_Out(3,7,"*");
if(keyPress == 48)
keyPress = 0;
store_pass[2] = keyPress;
do{
keyPress = Keypad_Key_Click();
switch (keyPress) {
case 1: keyPress = 1; break; // 1
case 2: keyPress = 2; break; // 2
case 3: keyPress = 3; break; // 3
//case 4: keyPress = 65; break; // A
case 5: keyPress = 4; break; // 4
case 6: keyPress = 5; break; // 5
case 7: keyPress = 6; break; // 6
//case 8: keyPress = 66; break; // B
case 9: keyPress = 7; break; // 7
case 10: keyPress = 8; break; // 8
case 11: keyPress = 9; break; // 9
//case 12: keyPress = 67; break; // C
case 13: keyPress = 0; break;
case 14: keyPress = 48; break;
case 15: keyPress = 0; break;
// case 16:
}
}while(!keyPress);
Lcd_Out(3,8,"*");
store_pass[3] = keyPress;
do{
keyPress = Keypad_Key_Click();
switch (keyPress) {
case 1: keyPress = 0; break; // 1
case 2: keyPress = 0; break; // 2
case 3: keyPress = 0; break; // 3
//case 4: keyPress = 65; break; // A
case 5: keyPress = 0; break; // 4
case 6: keyPress = 0; break; // 5
case 7: keyPress = 0; break; // 6
//case 8: keyPress = 66; break; // B
case 9: keyPress = 0; break; // 7
case 10: keyPress = 0; break; // 8
case 11: keyPress = 0; break; // 9
//case 12: keyPress = 67; break; // C
case 13: keyPress = 10; break;
case 14: keyPress = 0; break;
case 15: keyPress = 0; break;
// case 16:
}
}while(!keyPress);
if(keyPress == Enter)
{
password = passwordChecker(store_pass);
}
}while(password != 1);
main_menu();
}
/**************************************************
Check the input passwords
**************************************************/
int passwordChecker(char rec_pass[])
{
char valid_pass[4] = {3,1,0,7};
int i=0, count=0;
for(i=0; i<4; i++)
{
if(rec_pass[i] == valid_pass[i])
count++;
}
if(count == 4)
return(1);
else
Lcd_Out(3,2, "Incorrect password");
return(0);
}
/**************************************************
Display the Main Menu
**************************************************/
void main_menu(){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 5, "HGO's Bank");
Lcd_Out(2,1, "1.Balance");
Lcd_Out(2,11, "3.Withdraw");
Lcd_Out(4,1, "2.Airtime");
Lcd_Out(4,11, "4.Transfer");
// interrupt will be use for selection
}
void salutation(){
int m;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Welcome To HGO Bank");
Lcd_Out(2,1,"Enter Your password");
for(m = 0; m<4 ; m++)
{
Lcd_Cmd(_LCD_SHIFT_LEFT);
delay_ms(300);
}
for(m = 0; m<4 ; m++)
{
Lcd_Cmd(_LCD_SHIFT_RIGHT);
delay_ms(300);
}
}